<?php if ( ! defined('BASEPATH')) exit('No direct script access allowed');


class Users extends CI_Model
{
	function __construct()
	{
		parent::__construct();
	}
	
	function get_list()
	{
		$query= $this->db->get('prode_cat_user');
		//var_dump($query);
		
		if ($query->num_rows()!=0)
		{
			return $query->result_array();	
		}
		else
		{
			return false;
		}
	}
	
	function get_data($id=0)
	{ 
		$query= $this->db->get_where('prode_cat_user',array('usrId'=>$id));
		if ($query->num_rows()!=0)
		{
			return $query->row();	
		}
		else
		{
			return array();
		}
	}
	
	function insert($data=null)
	{
		if($data == null)
		{
			return false;
		}
		else
		{
			$array2 = array(
				'username'=>$data['username'],
				'email'=>$data['email'],
				'password'=>$data['pass']
				);
			
			if($this->db->insert('prode_cat_user',array(
							'usrName'=>$data['username'],
							'usrMail'=>$data['email'],
							'usrPass'=>md5($data['pass'])
							)))
				{
					
				//Obtener el id del usuario
				$usr  = 0;
				$query = $this->db->get_where('prode_cat_user', array('usrName' => $data['username'], 'usrPass'=>md5($data['pass'])));
				if ($query->num_rows()!=0)
					{
					$usr = $query->row('usrId');
					}
					
				//Obtener el id de la operacion
				$op = 0;
				$query = $this->db->get_where('prode_cat_operation', array('opCode' => 'UR'));
				if ($query->num_rows()!=0)
					{
					$op = $query->row('opId');
					}
					
				//Registrar actividad
				$this->db->insert('prode_cat_activity',array('usrId'=>$usr,'actOp'=>$op,'actDate'=>date('Y-m-d G:i:s')));
				return $array2;
				}
			else
				{
				return false;
				}

		}
	}
	
	function InsertFromFacebook($data=null)
	{
		if($data == null)
		{
			return false;
		}
		else
		{
			$isUpdate = false;
			$query = $this->db->get_where('prode_cat_user', array('fbId' => $data['usuario'][0]['uid']));
			if ($query->num_rows()!=0)
				{
					if($this->db->update('prode_cat_user',array(
								'usrName'=>$data['user_profile']['username'],
								'usrMail'=>$data['user_profile']['email'],
								'usrCompletName' => $data['user_profile']['name'],
								'fbProfile' => $data['user_profile']['link'],
								'pictureUrl' => $data['usuario'][0]['pic_square']
								), array('fbId' => $data['usuario'][0]['uid'])))
						{
							//nada
							$isUpdate = true;
						}
						else
						{
							return false;
						}
				}
				else
				{
						
				
					if($this->db->insert('prode_cat_user',array(
								'usrName'=>$data['user_profile']['username'],
								'usrMail'=>$data['user_profile']['email'],
								'usrCompletName' => $data['user_profile']['name'],
								'fbProfile' => $data['user_profile']['link'],
								'fbId' => $data['usuario'][0]['uid'],
								'pictureUrl' => $data['usuario'][0]['pic_square']
								)))
						{
							//nada
							$isUpdate = false;
						}
						else
						{
							return false;
						}
				}
			
			//Obtener el id del usuario
			$usr  = 0;
			$query = $this->db->get_where('prode_cat_user', array('fbId' => $data['usuario'][0]['uid']));
			if ($query->num_rows()!=0)
				{
				$usr = $query->row('usrId');
				}
					
			if($isUpdate == false)
			{					
				//Obtener el id de la operacion
				$op = 0;
				$query = $this->db->get_where('prode_cat_operation', array('opCode' => 'UR'));
				if ($query->num_rows()!=0)
					{
					$op = $query->row('opId');
					}
					
				//Registrar actividad
				$this->db->insert('prode_cat_activity',array('usrId'=>$usr,'actOp'=>$op,'actDate'=>date('Y-m-d G:i:s')));
			}
			$session = array(
				'username'  => $data['user_profile']['username'],
				'email'     => $data['user_profile']['email'],
				'logged_in' => TRUE,
				'id_user'   => $usr
				);
			
			return $session;
		}
	}
	
	function ValidateSession($data = null)
	{
		$query= $this->db->get_where('prode_cat_user',array('usrMail'=>$data['user'], 'usrPass'=>md5($data['pass'])));
		if ($query->num_rows()!=0)
		{
			$newdata = array(
					'username'  => $query->row('usrName'),
					'email'     => $query->row('usrMail'),
					'logged_in' => TRUE,
					'id_user'   => $query->row('usrId')
					);
			
			return $newdata;
		}
		else
		{
			return 0;
		}
	}
	
	function ReturnGame()
	{
		$query= $this->db->get_where('prode_cat_date',array('dtIsMain'=>1));
		if ($query->num_rows() != 0)
		{
			$dateId = $query->row('dtId');
			$usrId = $this->session->userdata('id_user');
			
			//Evaluar si hizo o no la jugada
			$query = $this->db->get_where('prode_cat_game_format',array('dtId'=>$dateId));
			
			$game = array();
			
			foreach($query->result() as $valor)
			{
				$jugada = $this->db->get_where('prode_cat_game',array('gfId'=>$valor->gfId,'usrId'=>$usrId));
				
				if($jugada->num_rows() > 0)
				{
					$game[] = array(
						      'idGame' 		=> $valor->gfId,
						      'local'  		=> $valor->tmIdLocal,
						      'localName'	=> $this->BuscarNombre($valor->tmIdLocal),
						      'localImage'	=> $this->BuscarLogo($valor->tmIdLocal),
						      'visit'		=> $valor->tmIdVisit,
						      'visitName'	=> $this->BuscarNombre($valor->tmIdVisit),
						      'visitImage'	=> $this->BuscarLogo($valor->tmIdVisit),
						      'result' 		=> $jugada->row('gmResult'),
						      'willcard'	=> $jugada->row('gmWillCard')
						      );
				}
				else
				{
					$game[] = array(
						      'idGame' 		=> $valor->gfId,
						      'local'  		=> $valor->tmIdLocal,
						      'localName'	=> $this->BuscarNombre($valor->tmIdLocal),
						      'localImage'	=> $this->BuscarLogo($valor->tmIdLocal),
						      'visit'		=> $valor->tmIdVisit,
						      'visitName'	=> $this->BuscarNombre($valor->tmIdVisit),
						      'visitImage'	=> $this->BuscarLogo($valor->tmIdVisit),
						      'result' 		=> 0,
						      'willcard'	=> $jugada->row('gmWillCard')
						      );
				}
			}
			
			return $game;
		}
		else
		{
			return "putt";
		}
	}
	
	
	
	function ReturnResult()
	{
		$usrId = $this->session->userdata('id_user');
		$query= $this->db->get_where('prode_cat_date',array( 'dtIsMain' => 0 ));
		
		if ($query->num_rows() != 0)
		{
			$results = array();
			
			foreach($query->result() as $valor)
			{
				$puntos = 0;
				
				//Formato de la fecha
				$queryDate = $this->db->get_where('prode_cat_game_format',array( 'dtId' => $valor->dtId ));
				
				foreach($queryDate->result() as $dates)
				{
					
					
					//comparar resultados
					//resultado del game
					$queryGame = $this->db->get_where('prode_cat_game_result',array( 'gfId' => $dates->gfId ));
					$resultado = $queryGame->row('gmResult');
					
					//resultado del usuario
					$queryGameUsr = $this->db->get_where('prode_cat_game',array( 'gfId' => $dates->gfId, 'usrId' => $usrId ));
					$resultadoUsr = $queryGameUsr->row('gmResult');
					$resultadoWillCard = $queryGameUsr->row('gmWillCard');
					
					if($resultado == $resultadoUsr || $resultado == $resultadoWillCard)
					{
						$puntos++;
					}
				}
				
				$results[] = array(
							'dtId' 		=> $valor->dtId,
							'dtDescription' => $valor->dtDescription,
							'points' 	=> $puntos
						   );
				
			}
			
			//..................................................................
			//... Region resultado parcial fecha actual ........................
			//..................................................................
			
			//preguntar si termino la fecha actual
			$query= $this->db->get_where('prode_cat_date',array( 'dtIsMain' => 1 ));
			
			if($query->num_rows() != 0)
			{
				$puntos = 0;
				//preguntar si la fecha ya cerro
				if($this->date_limit() == true)
				{
					//mostrar resultados parciales
					//Formato de la fecha
					$queryDate = $this->db->get_where('prode_cat_game_format',array( 'dtId' => $query->row('dtId') ));
					
					foreach($queryDate->result() as $dates)
					{
						//comparar resultados
						//resultado del game
						$queryGame = $this->db->get_where('prode_cat_game_result',array( 'gfId' => $dates->gfId ));
						if($queryGame->num_rows() > 0)
							$resultado = $queryGame->row('gmResult');
							else
							$resultado = -1;
						
						//resultado del usuario
						$queryGameUsr = $this->db->get_where('prode_cat_game',array( 'gfId' => $dates->gfId, 'usrId' => $usrId ));
						if($queryGameUsr->num_rows() > 0)
						{
							$resultadoUsr = $queryGameUsr->row('gmResult');
							$resultadoWillCard = $queryGameUsr->row('gmWillCard');
						}
						else
						{
							$resultadoUsr = -2;
							$resultadoWillCard = -2;
						}
						
						if($resultado == $resultadoUsr || $resultado == $resultadoWillCard)
						{
							$puntos++;
						}
					}
						
					$results[] = array(
							'dtId' 		=> $query->row('dtId'),
							'dtDescription' => $query->row('dtDescription'),
							'points' 	=> $puntos
						   );
				}
				
			}
			//..................................................................
			
			return $results;
		}
		else
		{
		     return 0;
		}
	}
	
	
	function BuscarNombre($idTeam)
	{
		$query= $this->db->get_where('prode_cat_team',array('tmId'=>$idTeam));
		
		return $query->row('tmDescription');
	}
	
	
	function BuscarLogo($idTeam)
	{
		$query= $this->db->get_where('prode_cat_team',array('tmId'=>$idTeam));
		
		return $query->row('tmImage');
	}
	
	
	function register_game($data = null)
	{
		if($data == null)
		{
			return false;
		}
		else
		{
			//validar que la fecha a jugar no halla cerrado
			//si es igual a la fecha actual, tienen que ser menos de las 18:00 horas
			//si es menor a la fecha actual, no se puede jugar
			//si es mayor a la fecha actual, si se puede jugar
			if($this->date_limit_status() == 0)
			{
				return false;
			}
			
			if($this->date_limit_status() == 1)
			{
				//preguntar si son menos de las 18:00 horas
				if( date("G") >= 18 )
				{
					return false;
				}
			}
		
			$query= $this->db->get_where('prode_cat_date',array('dtIsMain'=>1));
			if ($query->num_rows() != 0)
			{				
				$dateId = $query->row('dtId');
				$usrId = $this->session->userdata('id_user');
			
				//Evaluar si hizo o no la jugada
				$query = $this->db->get_where('prode_cat_game_format',array('dtId'=>$dateId));
			
				$insert = true;
				
				foreach($query->result() as $valor)
				{
					$jugada = $this->db->get_where('prode_cat_game',array('gfId'=>$valor->gfId,'usrId'=>$usrId));
					
					if($jugada->num_rows() > 0)
					{
						$insert = false;
					}
				}
				// Fin de evaluar si jugo o no
				
				if($insert == true)
				{
					//Jugada Nueva
					$willcard = $data['xwillcard'];
					
					$indice = 0;
					foreach($data['xnames'] as $valor)
					{
						if($valor == $willcard[0])
						{
							if($this->db->insert('prode_cat_game',array('usrId'=>$usrId, 'gfId'=>$valor, 'gmResult'=>$data['xsites'][$indice], 'gmWillCard' => $willcard[1])) == false)
									{
									     return false;
									}
						}
						else
						{
							if($valor == $willcard[2])
							{
								if($this->db->insert('prode_cat_game',array('usrId'=>$usrId, 'gfId'=>$valor, 'gmResult'=>$data['xsites'][$indice], 'gmWillCard' => $willcard[3])) == false)
									{
									     return false;
									}
							}
							else
							{
								if($this->db->insert('prode_cat_game',array('usrId'=>$usrId, 'gfId'=>$valor, 'gmResult'=>$data['xsites'][$indice])) == false)
									{
									     return false;
									}		
							}
						}
				
						$indice++;
					}
					
					//Obtener el id de la operacion
					$op = 0;
					$query = $this->db->get_where('prode_cat_operation', array('opCode' => 'CG'));
					if ($query->num_rows()!=0)
						{
						$op = $query->row('opId');
						}
						
					//Registrar actividad
					$this->db->insert('prode_cat_activity',array('usrId'=>$usrId,'actOp'=>$op,'actDate'=>date('Y-m-d G:i:s')));
					
					return true;
				}
				else
				{
					//Modificar jugada
					$willcard = $data['xwillcard'];
					
					$indice = 0;
					foreach($data['xnames'] as $valor)
					{
						if($willcard[0] == $valor)
						{
							if($this->db->update('prode_cat_game',array('gmResult'=>$data['xsites'][$indice], 'gmWillCard'=>$willcard[1]),array('usrId'=>$usrId, 'gfId'=>$valor)) == false)
								{
								     return false;
								}
						}
						else
						{
							if($willcard[2] == $valor)
							{
								if($this->db->update('prode_cat_game',array('gmResult'=>$data['xsites'][$indice], 'gmWillCard'=>$willcard[3]),array('usrId'=>$usrId, 'gfId'=>$valor)) == false)
								{
								     return false;
								}
							}
							else
							{
								if($this->db->update('prode_cat_game',array('gmResult'=>$data['xsites'][$indice], 'gmWillCard'=>null),array('usrId'=>$usrId, 'gfId'=>$valor)) == false)
								{
								     return false;
								}		
							}
						}
						   
						$indice++;
					}
					
					//Obtener el id de la operacion
					$op = 0;
					$query = $this->db->get_where('prode_cat_operation', array('opCode' => 'UG'));
					if ($query->num_rows()!=0)
						{
						$op = $query->row('opId');
						}
						
					//Registrar actividad
					$this->db->insert('prode_cat_activity',array('usrId'=>$usrId,'actOp'=>$op,'actDate'=>date('Y-m-d G:i:s')));
					
					return true;
				}
			}
			else
			{
				return false;
			}
			
		}
	}
	
	
	
	//Compara si la fecha1 es mayor a la fecha2
	//si fecha1 > fecha2 = true
	//sino fecha1 <= fecha2 = false
	function comp_date($fecha1, $fecha2)
	{
		/*
		$fecha1 = str_replace('/','-',$fecha1);
		
		list($dia,$mes,$año)=explode('-',$fecha1);
		
		$fecha1 = mktime(0,0,0,$mes,$dia,$año);
		
		list($dia,$mes,$año)=explode('-',$fecha2);
		
		$fecha2 = mktime(0,0,0,$mes,$dia,$año);
	
		if($fecha1 > $fecha2)
		{
			return true;
		}
		else
		{
			return false;
		}*/
		echo "puto";
	}
	
	
	function date_limit()
	{
		$query= $this->db->get_where('prode_cat_date',array('dtIsMain'=>1));
		if ($query->num_rows() != 0)
		{
			$date = $query->row('dtDayLimit');
			$fecha2 = date("Y-m-d"); 
			
			$fecha1 = str_replace('/','-',$date);
			
			//$fecha1 => fecha limite de juego
			//$fecha2 => fecha actual
			
			if($fecha1 > $fecha2)
			{
				return false;
			}
			else
			{
				if($fecha1 == $fecha2)
				{
					//preguntar si son menos de las 18:00 horas
					if( date("G") >= 18 )
					{
						return true;
					}
					else
					{
						return false;
					}
				}
				else
				{
					return true;
				}
			}
		}
		else
		{
			return false;
		}
	}
	
	function date_limit_status()
	{
		$query= $this->db->get_where('prode_cat_date',array('dtIsMain'=>1));
		if ($query->num_rows() != 0)
		{
			$date = $query->row('dtDayLimit');
			$fecha2 = date("Y-m-d"); 
			
			$fecha1 = str_replace('/','-',$date);
			
			if($fecha1 > $fecha2)
			{
				return 2;
			}
			else
			{
				if($fecha1 == $fecha2)
				{
					return 1;
				}
				else
				{
					return 0;
				}
				
			}
		}
		else
		{
			return 0;
		}
	}
	
	function return_date()
	{
		$query= $this->db->get_where('prode_cat_date',array('dtIsMain'=>1));
		if ($query->num_rows() != 0)
		{
			return $query->row('dtDayLimit');
		}
		else
		{
			return false;
		}
	}
	
	function update_profile($data = null)
	{
		if($data == null)
		{
			return false;
		}
		else
		{
			$indice = 0;
			$insert = array();
			
			foreach($data['xrefere'] as $valor)
			{
				switch($valor)
				{
					case "usrname":
						$insert['usrCompletName'] = $data['xvalue'][$indice];
						$indice++;
						break;
					
					case "pass":
						$insert['usrPass'] = md5($data['xvalue'][$indice]);
						$indice++;
						break;
				}
			}
			
			if( $indice > 0 )
			{
				$this->db->where('usrId', $data['xid']);
				
				
				if($this->db->update('prode_cat_user', $insert) == false)
				{
					return 0;
				}
				else
				{
					return 1;
				}
			}
			else
			{
				return 1;
			}
			
			
		}
	}
	
	function date_of_user($data = null)
	{
		if($data == null)
		{
			return false;	
		}
		else
		{
			$usrId = $this->session->userdata('id_user');
			$fecha = $data['fecha'];
			
			return $this->return_result_for_user($fecha, $usrId);
			
		}
	}
	
	function date_of_user_results($data = null)
	{
		if($data == null)
		{
			return false;	
		}
		else
		{
			$usrId = $data['usr'];
			$fecha = $data['fecha'];
			
			return $this->return_result_for_user($fecha, $usrId);
			
		}
	}
	
	function return_result_for_user($fecha , $usrId)
	{			
		//Evaluar si hizo o no la jugada
		$query = $this->db->get_where('prode_cat_game_format',array('dtId'=>$fecha));
		
		$game = array();
		
		foreach($query->result() as $valor)
		{
			$jugada = $this->db->get_where('prode_cat_game',array('gfId'=>$valor->gfId,'usrId'=>$usrId));
			
			if($jugada->num_rows() > 0)
			{
				$game[] = array(
					      'localName'	=> $this->BuscarNombre($valor->tmIdLocal),
					      'localImage'	=> $this->BuscarLogo($valor->tmIdLocal),
					      'visitName'	=> $this->BuscarNombre($valor->tmIdVisit),
					      'visitImage'	=> $this->BuscarLogo($valor->tmIdVisit),
					      'resultUsr'	=> $jugada->row('gmResult'),
					      'resultFin'	=> $this->BuscarResultado($valor->gfId),
					      'willCard'	=> $jugada->row('gmWillCard')
					      );
			}
		}
		
		return $game;

	}
	
	function BuscarResultado($idDate)
	{
		$query= $this->db->get_where('prode_cat_game_result',array('gfId'=>$idDate));
		
		if($query->num_rows() > 0)
			return $query->row('gmResult');
		else
			return -1;
	}
	
	function Estadistic_team($data = null)
	{
		if($data == null)
		{
			return false;	
		}
		else
		{
			$team 		= $data['team'];
			$condicion 	= $data['est'];
			
			$query = $this->db->get_where('prode_cat_team', array('tmDescription' => $team));
			
			$mainDate = $this->db->get_where('prode_cat_date', array('dtIsMain' => 1));
			
			$idFecha = 0;
			if($mainDate->num_rows() > 0)
			{
				$idFecha = $mainDate->row('dtId');	
			}			
			
			if($query->num_rows() > 0)
			{
				$idTeam = $query->row('tmId');
				$this->db->where('(tmIdLocal = '.$query->row('tmId').' or tmIdVisit = '.$query->row('tmId').') and dtId != '.$idFecha.' ');
				$query = $this->db->get('prode_cat_game_format');
				
				if($query->num_rows() > 0)
				{
					$partidos 	= 0;
					$ganados 	= 0;
					$ganadosLoc	= 0;
					$ganadosVis	= 0;
					$empatados 	= 0;
					$empatadosLoc	= 0;
					$empatadosVis	= 0;
					$perdidos 	= 0;
					$perdidosLoc	= 0;
					$perdidosVis	= 0;
					
					$partidos = $query->num_rows();
					
					foreach($query->result() as $valor)
					{
						$resultado = $this->db->get_where('prode_cat_game_result',array('gfId'=>$valor->gfId));
						
						if($resultado->num_rows() > 0)
						{
							$res = $resultado->row('gmResult');
							
							switch($res)
							{
								//Empate
								case 0:
									$empatados++;
									if($valor->tmIdLocal == $idTeam)
									{
										$empatadosLoc++;
									}
									else
									{
										$empatadosVis++;
									}
									break;
								
								//Local
								case 1:
									if($valor->tmIdLocal == $idTeam)
									{
										$ganados++;
										$ganadosLoc++;
									}
									else
									{
										$perdidos++;
										$perdidosLoc++;
									}
									break;
								
								//Visitante
								case 2:
									if($valor->tmIdVisit == $idTeam)
									{
										$ganados++;
										$ganadosVis++;
									}
									else
									{
										$perdidos++;
										$perdidosVis++;
									}
									break;
							}
						}
					}
					
					$array = 	array(	'ganados' 	=> $ganados, 
								'ganadosLoc' 	=> $ganadosLoc,
								'ganadosVis'	=> $ganadosVis,
								'empatados' 	=> $empatados,
								'empatadosLoc'  => $empatadosLoc,
								'empatadosVis'  => $empatadosVis,
								'perdidos' 	=> $perdidos,
								'perdidosLoc' 	=> $perdidosLoc,
								'perdidosVis'	=> $perdidosVis,
								'partidos'	=> $partidos);
					
					return $array;
				}
				else
				{
					return false;
				}
			}
			else
			{
				return 0;
			}
		}
	}
}
	